package com.singleton.innerclass;

/**
 * 静态内部类
 * 为什么要是静态的内部类，是因为getInstance静态方法要用到这个类，静态方法中的变量要是静态的
 *
 * 1 构造方法私有
 * 3 静态内部类 ，内部类有一个静态常量是 外部类的实例
 * 4 public static getInstance 方法 ,得到内部类的静态常量成员变量
 */
public class Singleton_07 {
    public static void main(String[] args) {
        //测试
        //Single02 single02 = new Single02(); 因为构造方法私有所以无法new对象
        Single07 instance1 = Single07.getInstance();
        Single07 instance2 = Single07.getInstance();
        System.out.println(instance1 == instance2 );
        System.out.println("instance1 hashcode :" + instance1);
        System.out.println("instance2 hashcode :" + instance2);
    }
}

class Single07{

    private Single07(){}

    private static class SingletonInstance{
        private static final Single07 INSTANCE = new Single07();
    }

    public static Single07 getInstance(){
        return SingletonInstance.INSTANCE ;
    }

}
